/**
 * 
 */
package ronin.ai;

import ronin.util.Telegram;
import ronin.actor2d.*;

/**
 * @author Ronin
 * - abstract base class to define an interface for a state
 */

public class State 
{	
	//static State ref = null; // ref is a reference to this Singleton 
	
	
	// Isn't defined since states will more or likely be Singleton Objects.  
	public State () {}
	
	
	// is called when state is entered. 
	public void enter (Actor2D owner){}
	
	
	// is called when state is being changed to something else. 
	public void exit (Actor2D owner){}
	
	
	// is called while the current state is being executed. 
	public void execute (Actor2D owner){System.out.println("Executing state now");}
	
	public boolean onMessage(Actor2D owner, Telegram message){
		System.out.println("Bot Received a message");
		return true;
			
	}
	
	/** 
	 * returns an Instance of this state
	// 
	static protected State instance()
	{
		if (ref == null) ref = new State();
		
		return ref;	
	}*/
	
	
	// TODO finish disabling copy/clone methods. 


}
